
import java.io.IOException;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Mac
 */
class LiczbaException extends Exception 
{
     LiczbaException( String w ) { super(w); }
}
sadadsdas

public class Liczba {
    
    private char[] liczby = 
            {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
    
    private int m;
    
    Liczba() 
    {
        m = 0;
        System.out.println("Nie wprowadzono poprawnych danych");
    }
    
    Liczba(int n) throws LiczbaException 
    {
        System.out.println();
        m = n;
        System.out.println("n = "+n);
        System.out.println("podstawa = 10");
        System.out.println();
        
        for( int i = 2; i <= 16; i++ )
        {
            System.out.println("Liczba "+ n + ", podstawa "+i+" = "+zapis(i));
        }
        
        System.out.println("---------------------------------------------------------");
    }
    
    Liczba(String n, int podstawa) throws LiczbaException 
    {
        n.toUpperCase();

        System.out.println("n = "+n);
        System.out.println("podstawa = "+podstawa);
	double j;
	int i;
	int temp = 0;
        int dlug = 0;

	if( podstawa < 2 || podstawa > 16 ) throw new LiczbaException("Nieprawidlowa podstawa");

	for( i = n.length()-1, j = 0.0; i >= 0; i--, j++ )
	{
            for( int k = 0; k < 15; k++ )
            {
                if( n.charAt(i) == liczby[k] )
                {
                    if( podstawa < k-1 ) throw new LiczbaException("Liczba nie jest zapisana w podanej podstawie!");
                    temp += k*(int)(Math.pow(podstawa,j));
                    dlug++;
                    break;
                }
            }
            
        }//koniec fora
        m = temp;
        System.out.println();
        
        for( i = 2; i <= 16; i++ )
        {
            System.out.println("Liczba "+ temp + ", podstawa "+i+" = "+zapis(i));
        }
        
        System.out.println("---------------------------------------------------------");
    }
    
    public String zapis(int podstawa) throws LiczbaException
    {
        String temp = "";
        if( podstawa < 2 || podstawa > 16 ) throw new LiczbaException(" Nieprawidlowa podstawa. Podstawa musi byc z zakresu <2;32> ");
        
        int y = m;
        
        String tmp = "";
        int t = 1;
        
        while(t != 0)
        {
            int x = y % podstawa;
            y /= podstawa;
            //for( int k = 0; k < 32; k++ )
            //{
                //if( x == k )
            tmp = ""+liczby[x];
            //}
            
            //tmp = Integer.toString(x);
            temp+=tmp;
            t = y;
        }
        
        String pomocniczy = "";
        
        for(int i = temp.length()-1; i >= 0; i--)
        {
            pomocniczy += temp.charAt(i);
        }
        return pomocniczy;
    }
    
    public static void main(String args[]) throws IOException
    {
        Liczba licz;
        for(int i = 0; i < args.length; i+=2)
        {
            try
            {
                
                if( args[i+1].equals("10") )
                    licz = new Liczba(Integer.parseInt(args[i]));
                else if ( i+1 < args.length )
                    licz = new Liczba(args[i], Integer.parseInt(args[i+1]));
                else
                    licz = new Liczba();
                
                if(i+2 < args.length)
                {
                    System.out.println();
                    System.out.println();
                    System.out.println("Aby pokazac nastepna liczbe wcisnij enter");
                    System.in.read();
                    System.out.println();
                }
                
                licz = null;
            }catch(LiczbaException e)
            {
                System.out.println("Liczba "+args[i]+" "+e.getMessage());
                if(i+2 < args.length)
                {
                    System.out.println();
                    System.out.println();
                    System.out.println("Aby pokazac nastepna liczbe wcisnij enter");
                    System.in.read();
                    System.out.println();
                }
            }catch(NumberFormatException e)
            {
                System.out.println("Liczba "+args[i]);
                System.out.println("Podstawa "+args[i+1]+" jest zlego formatu");
                if(i+2 < args.length)
                {
                    System.out.println();
                    System.out.println();
                    System.out.println("Aby pokazac nastepna liczbe wcisnij enter");
                    System.in.read();
                    System.out.println();
                }
            }catch(Exception e)
            {
                System.out.println("Zle");
            }
        }
    }
}
